package dm

import (
	"fmt"
	"sync"
)

var lock sync.Mutex
var rw sync.RWMutex

/**
锁
WaitGroup
Mutex 互斥
Cond
*/
// 协程安全的
type atomicInt int

func Lock() {
	fmt.Println("olock")

	// 协程安全的
	//var a int64 = 1
	//c := atomic.AddInt64(&a, 2)
	//fmt.Println(c)

	// 互斥锁 在协程里面这么搞
	lock.Lock()
	// 公用资源的操作
	defer lock.Unlock()

	// 代码块进行加锁 读写互斥锁只锁写操作
	func() {
		rw.RLock()

		defer rw.RUnlock()
	}()
}
